package com.mydemo.game;

import com.mydemo.entity.Save;
import com.mydemo.print.Print;
import com.mydemo.utils.dataUtils.DataUtil;

import java.util.List;
import java.util.Scanner;

public class gameMain {
    public static Save newGame() {
        System.out.println("请输入存档名称：");
        Scanner scanner = new Scanner(System.in);
        String saveName = scanner.next();
        System.out.println("存档：" + saveName);
        System.out.println("请输入你的公司名称");
        String brandName = scanner.next();
        System.out.println("公司名称：" + brandName);
        System.out.println("游戏开始！");
//        ↓ 新建一个存档对象
        Save save = new Save();
        save.setSaveName(saveName);
        save.setBrandName(brandName);
        save.setDay(0);
        save.setMoney(5000);
        save.setCarList(null);
        save.setDriverList(null);
        save.setLastPlayTime(null);
//        在return之前先存储一下这个save
        DataUtil<Save,?> saveUtil = new DataUtil<>(Save.class,"Save");
//        DataUtil.add(Save.class, save, "Save");
        saveUtil.add().add(save);
        return save;
    }

    public static Save loadGame() {
        /**
         * 这里应该读取所有的存档让用户选择，这就牵扯到存储之类的内容了
         * 因为这次没有做登录，用户之类的内容，所以就直接读取所有的存档了
         * */
//        先获取所有的存档
        DataUtil<Save,?> saveDataUtil = new DataUtil<>(Save.class,"Save");
//        List<Save> saveList = new SelectAll(Save.class, "Save").SelectAll();
        List<Save> saveList = saveDataUtil.select().selectAll();
        for (Save s :
                saveList) {
            Print.printSaves(s);
        }
        System.out.println("输入0退出");
        System.out.print("请选择一个存档以继续游戏：");
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            int choose = scanner.nextInt();
            if (choose == 0) {
                flag = false;
            } else {
                // 根据用户输入的ID查找对应的Save对象
                Save selectedSave = saveList.stream()
                        .filter(save -> save.getId() == choose) // 假设getId()返回int类型的ID
                        .findFirst()
                        .orElse(null); // 如果找不到对应的Save，返回null
                if (selectedSave != null) {
                    return selectedSave;
                }else {
                    System.out.println(choose + "  找不到这个存档！请确认输入正确");
                }
            }
        }
        return null;
    }

//    public static void main(String[] args) {
//        Car car = new Car();//创建一个新car类
//        car.setCarBrand("修改测试");
//        car.setCarModel("测试型号3");
//        car.setPrice(1);
//
//
//
//////        设定一下基础属性，用于测试增加操作，测试其他的时候不需要基础属性的设定
////        DataUtil.add(Car.class, car, "Car");//增加操作的函数
//////        ↓ 这个是查找操作，查找一个字段符合的情况
////        List<Car> carList = DataUtil.select(Car.class, "Car", "carModel", "测试型号1");
////        for (
////                Car c :
////                carList) {
////            System.out.println(c.toString());
////        }
////       ------------------------
////        ↓ 这个也是查找操作，不过测试的是链式查询（会跟上面重名）
////        List<Car> carList = new Query<Car>(Car.class, "Car")
////                .where("carBrand", "修改测试")
////                .where("carModel", "测试型号3")
////                .execute();
////        for (
////                Car c :
////                carList) {
////            System.out.println(c.toString());
////        }
//
////      ↓ 更新操作
////        DataUtil.update(Car.class, car, "carModel", "测试型号2", "Car");
////      ↓ 删除操作
////        DataUtil.delete("Car", "carBrand", "修改测试", Car.class);
////      ↓ 新建一个司机类，这个dataUtil可以接受任意类型的输入
////        Driver driver = new Driver();
////        driver.setName("测试司机");
////        ↓ 测试添加操作
////        DataUtil.add(Driver.class, driver, "Driver");
//
////    } 测试方法
//    }

}